package m202311.d08;

/**
 * @author haocongshun
 * @date 2023/11/08 18:38:45
 */

/**
 * 238. 除自身以外数组的乘积
 */
public class Q238 {
    public static void main(String[] args) {
        int[] ints = new Q238().productExceptSelf(new int[]{0, 0});
        System.out.println();
    }

    public int[] productExceptSelf(int[] nums) {
        int[] left = new int[nums.length];
        int[] right = new int[nums.length];
        left[0] = 1;
        for (int i = 1; i < nums.length; i++) {
            left[i] = left[i - 1] * nums[i - 1];
        }
        right[nums.length - 1] = 1;
        for (int i = nums.length - 2; i >= 0; i--) {
            right[i] = right[i + 1] * nums[i + 1];
        }

        int[] result = new int[nums.length];
        for (int i = 0; i < nums.length; i++) {
            result[i] = left[i] * right[i];
        }
        return result;
    }
//    public int[] productExceptSelf(int[] nums) {
//        int[] result = new int[nums.length];
//        int all = 1;
//        int firstZero = -1;
//        for (int i = 0; i < nums.length; i++) {
//            if (nums[i] == 0) {
//                if (firstZero == -1) {
//                    firstZero = i;
//                } else {
//                    result[firstZero] = 0;
//                    return result;
//                }
//                result[i] = 1;
//            } else {
//                all = all * nums[i];
//            }
//        }
//        if (firstZero != -1) {
//            result[firstZero] = all;
//            return result;
//        }
//        for (int i = 0; i < nums.length; i++) {
//            result[i] = all / nums[i];
//        }
//        return result;
//    }
}
